{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "pytorch 支持 sklearn 的重参数搜索需要其他的库。一般的项目中设置好命令行脚本后，可以通过更改脚本参数手动实现超参数搜索"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.646223Z",
     "start_time": "2025-02-26T10:00:47.641223Z"
    }
   },
   "source": [
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import sklearn\n",
    "import pandas as pd\n",
    "import os\n",
    "import sys\n",
    "import time\n",
    "from tqdm.auto import tqdm\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "print(sys.version_info)\n",
    "for module in mpl, np, pd, sklearn, torch:\n",
    "    print(module.__name__, module.__version__)\n",
    "    \n",
    "device = torch.device(\"cuda:0\") if torch.cuda.is_available() else torch.device(\"cpu\")\n",
    "print(device)\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sys.version_info(major=3, minor=12, micro=3, releaselevel='final', serial=0)\n",
      "matplotlib 3.10.0\n",
      "numpy 2.0.2\n",
      "pandas 2.2.3\n",
      "sklearn 1.6.1\n",
      "torch 2.6.0+cu126\n",
      "cuda:0\n"
     ]
    }
   ],
   "execution_count": 3
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 准备数据"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.694975Z",
     "start_time": "2025-02-26T10:00:47.663593Z"
    }
   },
   "source": [
    "from sklearn.datasets import fetch_california_housing\n",
    "\n",
    "housing = fetch_california_housing(data_home='data')\n",
    "print(housing.DESCR)\n",
    "print(housing.data.shape)\n",
    "print(housing.target.shape)"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      ".. _california_housing_dataset:\n",
      "\n",
      "California Housing dataset\n",
      "--------------------------\n",
      "\n",
      "**Data Set Characteristics:**\n",
      "\n",
      ":Number of Instances: 20640\n",
      "\n",
      ":Number of Attributes: 8 numeric, predictive attributes and the target\n",
      "\n",
      ":Attribute Information:\n",
      "    - MedInc        median income in block group\n",
      "    - HouseAge      median house age in block group\n",
      "    - AveRooms      average number of rooms per household\n",
      "    - AveBedrms     average number of bedrooms per household\n",
      "    - Population    block group population\n",
      "    - AveOccup      average number of household members\n",
      "    - Latitude      block group latitude\n",
      "    - Longitude     block group longitude\n",
      "\n",
      ":Missing Attribute Values: None\n",
      "\n",
      "This dataset was obtained from the StatLib repository.\n",
      "https://www.dcc.fc.up.pt/~ltorgo/Regression/cal_housing.html\n",
      "\n",
      "The target variable is the median house value for California districts,\n",
      "expressed in hundreds of thousands of dollars ($100,000).\n",
      "\n",
      "This dataset was derived from the 1990 U.S. census, using one row per census\n",
      "block group. A block group is the smallest geographical unit for which the U.S.\n",
      "Census Bureau publishes sample data (a block group typically has a population\n",
      "of 600 to 3,000 people).\n",
      "\n",
      "A household is a group of people residing within a home. Since the average\n",
      "number of rooms and bedrooms in this dataset are provided per household, these\n",
      "columns may take surprisingly large values for block groups with few households\n",
      "and many empty houses, such as vacation resorts.\n",
      "\n",
      "It can be downloaded/loaded using the\n",
      ":func:`sklearn.datasets.fetch_california_housing` function.\n",
      "\n",
      ".. rubric:: References\n",
      "\n",
      "- Pace, R. Kelley and Ronald Barry, Sparse Spatial Autoregressions,\n",
      "  Statistics and Probability Letters, 33 (1997) 291-297\n",
      "\n",
      "(20640, 8)\n",
      "(20640,)\n"
     ]
    }
   ],
   "execution_count": 4
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.699248Z",
     "start_time": "2025-02-26T10:00:47.695977Z"
    }
   },
   "source": [
    "# print(housing.data[0:5])\n",
    "import pprint  #打印的格式比较 好看\n",
    "\n",
    "pprint.pprint(housing.data[0:5])\n",
    "print('-'*50)\n",
    "pprint.pprint(housing.target[0:5])"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "array([[ 8.32520000e+00,  4.10000000e+01,  6.98412698e+00,\n",
      "         1.02380952e+00,  3.22000000e+02,  2.55555556e+00,\n",
      "         3.78800000e+01, -1.22230000e+02],\n",
      "       [ 8.30140000e+00,  2.10000000e+01,  6.23813708e+00,\n",
      "         9.71880492e-01,  2.40100000e+03,  2.10984183e+00,\n",
      "         3.78600000e+01, -1.22220000e+02],\n",
      "       [ 7.25740000e+00,  5.20000000e+01,  8.28813559e+00,\n",
      "         1.07344633e+00,  4.96000000e+02,  2.80225989e+00,\n",
      "         3.78500000e+01, -1.22240000e+02],\n",
      "       [ 5.64310000e+00,  5.20000000e+01,  5.81735160e+00,\n",
      "         1.07305936e+00,  5.58000000e+02,  2.54794521e+00,\n",
      "         3.78500000e+01, -1.22250000e+02],\n",
      "       [ 3.84620000e+00,  5.20000000e+01,  6.28185328e+00,\n",
      "         1.08108108e+00,  5.65000000e+02,  2.18146718e+00,\n",
      "         3.78500000e+01, -1.22250000e+02]])\n",
      "--------------------------------------------------\n",
      "array([4.526, 3.585, 3.521, 3.413, 3.422])\n"
     ]
    }
   ],
   "execution_count": 5
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.740780Z",
     "start_time": "2025-02-26T10:00:47.699248Z"
    }
   },
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "#拆分训练集和测试集，random_state是随机种子,同样的随机数种子，是为了得到同样的随机值\n",
    "x_train_all, x_test, y_train_all, y_test = train_test_split(\n",
    "    housing.data, housing.target, random_state = 7)\n",
    "x_train, x_valid, y_train, y_valid = train_test_split(\n",
    "    x_train_all, y_train_all, random_state = 11)\n",
    "# 训练集\n",
    "print(x_train.shape, y_train.shape)\n",
    "# 验证集\n",
    "print(x_valid.shape, y_valid.shape)\n",
    "# 测试集\n",
    "print(x_test.shape, y_test.shape)\n",
    "\n",
    "dataset_maps = {\n",
    "    \"train\": [x_train, y_train],\n",
    "    \"valid\": [x_valid, y_valid],\n",
    "    \"test\": [x_test, y_test],\n",
    "}\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(11610, 8) (11610,)\n",
      "(3870, 8) (3870,)\n",
      "(5160, 8) (5160,)\n"
     ]
    }
   ],
   "execution_count": 6
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.748913Z",
     "start_time": "2025-02-26T10:00:47.741782Z"
    }
   },
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "from torch.utils.data import DataLoader\n",
    "\n",
    "\n",
    "scaler = StandardScaler()\n",
    "scaler.fit(x_train)"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "StandardScaler()"
      ],
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>StandardScaler()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div></div></div>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 7
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 构建数据集"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.757432Z",
     "start_time": "2025-02-26T10:00:47.749915Z"
    }
   },
   "source": [
    "from torch.utils.data import Dataset\n",
    "\n",
    "class HousingDataset(Dataset):\n",
    "    def __init__(self, mode='train'):\n",
    "        self.x, self.y = dataset_maps[mode]\n",
    "        self.x = torch.from_numpy(scaler.transform(self.x)).float()\n",
    "        self.y = torch.from_numpy(self.y).float().reshape(-1, 1)\n",
    "            \n",
    "    def __len__(self):\n",
    "        return len(self.x)\n",
    "    \n",
    "    def __getitem__(self, idx):\n",
    "        return self.x[idx], self.y[idx]\n",
    "    \n",
    "    \n",
    "train_ds = HousingDataset(\"train\")\n",
    "valid_ds = HousingDataset(\"valid\")\n",
    "test_ds = HousingDataset(\"test\")"
   ],
   "outputs": [],
   "execution_count": 8
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.764134Z",
     "start_time": "2025-02-26T10:00:47.758434Z"
    }
   },
   "source": [
    "train_ds[1]"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(tensor([-0.2981,  0.3523, -0.1092, -0.2506, -0.0341, -0.0060,  1.0806, -1.0611]),\n",
       " tensor([1.5140]))"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 9
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### DataLoader"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.768225Z",
     "start_time": "2025-02-26T10:00:47.765136Z"
    }
   },
   "source": [
    "from torch.utils.data import DataLoader\n",
    "\n",
    "\n",
    "batch_size = 256 #大一些，可以加快训练速度\n",
    "train_loader = DataLoader(train_ds, batch_size=batch_size, shuffle=True)\n",
    "val_loader = DataLoader(valid_ds, batch_size=batch_size, shuffle=False)\n",
    "test_loader = DataLoader(test_ds, batch_size=batch_size, shuffle=False)"
   ],
   "outputs": [],
   "execution_count": 10
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 定义模型"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.773252Z",
     "start_time": "2025-02-26T10:00:47.769227Z"
    }
   },
   "source": [
    "#回归模型我们只需要1个数\n",
    "\n",
    "class NeuralNetwork(nn.Module):\n",
    "    def __init__(self, input_dim=8):\n",
    "        super().__init__()\n",
    "        self.linear_relu_stack = nn.Sequential(\n",
    "            nn.Linear(input_dim, 30),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(30, 1)\n",
    "            )\n",
    "        \n",
    "    def forward(self, x):\n",
    "        # x.shape [batch size, 8]\n",
    "        logits = self.linear_relu_stack(x)\n",
    "        # logits.shape [batch size, 1]\n",
    "        return logits"
   ],
   "outputs": [],
   "execution_count": 11
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.777696Z",
     "start_time": "2025-02-26T10:00:47.774254Z"
    }
   },
   "source": [
    "class EarlyStopCallback:\n",
    "    def __init__(self, patience=5, min_delta=0.01):\n",
    "        \"\"\"\n",
    "\n",
    "        Args:\n",
    "            patience (int, optional): Number of epochs with no improvement after which training will be stopped.. Defaults to 5.\n",
    "            min_delta (float, optional): Minimum change in the monitored quantity to qualify as an improvement, i.e. an absolute \n",
    "                change of less than min_delta, will count as no improvement. Defaults to 0.01.\n",
    "        \"\"\"\n",
    "        self.patience = patience\n",
    "        self.min_delta = min_delta\n",
    "        self.best_metric = -1\n",
    "        self.counter = 0\n",
    "        \n",
    "    def __call__(self, metric):\n",
    "        if metric >= self.best_metric + self.min_delta:\n",
    "            # update best metric\n",
    "            self.best_metric = metric\n",
    "            # reset counter \n",
    "            self.counter = 0\n",
    "        else: \n",
    "            self.counter += 1\n",
    "            \n",
    "    @property\n",
    "    def early_stop(self):\n",
    "        return self.counter >= self.patience\n"
   ],
   "outputs": [],
   "execution_count": 12
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.789156Z",
     "start_time": "2025-02-26T10:00:47.785695Z"
    }
   },
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "@torch.no_grad()\n",
    "def evaluating(model, dataloader, loss_fct):\n",
    "    loss_list = []\n",
    "    for datas, labels in dataloader:\n",
    "        datas = datas.to(device)\n",
    "        labels = labels.to(device)\n",
    "        # 前向计算\n",
    "        logits = model(datas)\n",
    "        loss = loss_fct(logits, labels)         # 验证集损失\n",
    "        loss_list.append(loss.item())\n",
    "        \n",
    "    return np.mean(loss_list)\n"
   ],
   "outputs": [],
   "execution_count": 13
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.812487Z",
     "start_time": "2025-02-26T10:00:47.807155Z"
    }
   },
   "source": [
    "# 训练\n",
    "def training(\n",
    "    model, \n",
    "    train_loader, \n",
    "    val_loader, \n",
    "    epoch, \n",
    "    loss_fct, \n",
    "    optimizer, \n",
    "    tensorboard_callback=None,\n",
    "    save_ckpt_callback=None,\n",
    "    early_stop_callback=None,\n",
    "    eval_step=500,\n",
    "    ):\n",
    "    record_dict = {\n",
    "        \"train\": [],\n",
    "        \"val\": []\n",
    "    }\n",
    "    \n",
    "    global_step = 0\n",
    "    model.train()\n",
    "    with tqdm(total=epoch * len(train_loader)) as pbar:\n",
    "        for epoch_id in range(epoch):\n",
    "            # training\n",
    "            for datas, labels in train_loader:\n",
    "                datas = datas.to(device)\n",
    "                labels = labels.to(device)\n",
    "                # 梯度清空\n",
    "                optimizer.zero_grad()\n",
    "                # 模型前向计算\n",
    "                logits = model(datas)\n",
    "                # 计算损失\n",
    "                loss = loss_fct(logits, labels)\n",
    "                # 梯度回传\n",
    "                loss.backward()\n",
    "                # 调整优化器，包括学习率的变动等\n",
    "                optimizer.step()\n",
    " \n",
    "                loss = loss.cpu().item()\n",
    "                # record\n",
    "                \n",
    "                record_dict[\"train\"].append({\n",
    "                    \"loss\": loss, \"step\": global_step\n",
    "                })\n",
    "                \n",
    "                # evaluating\n",
    "                if global_step % eval_step == 0:\n",
    "                    model.eval()\n",
    "                    val_loss = evaluating(model, val_loader, loss_fct)\n",
    "                    record_dict[\"val\"].append({\n",
    "                        \"loss\": val_loss, \"step\": global_step\n",
    "                    })\n",
    "                    model.train()\n",
    "\n",
    "                    # 早停 Early Stop\n",
    "                    if early_stop_callback is not None:\n",
    "                        early_stop_callback(-val_loss)\n",
    "                        if early_stop_callback.early_stop:\n",
    "                            print(f\"Early stop at epoch {epoch_id} / global_step {global_step}\")\n",
    "                            return record_dict\n",
    "                    \n",
    "                # udate step\n",
    "                global_step += 1\n",
    "                pbar.update(1)\n",
    "                pbar.set_postfix({\"epoch\": epoch_id})\n",
    "        \n",
    "    return record_dict\n"
   ],
   "outputs": [],
   "execution_count": 14
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:00:47.826255Z",
     "start_time": "2025-02-26T10:00:47.821490Z"
    }
   },
   "source": [
    "#画线要注意的是损失是不一定在零到1之间的\n",
    "def plot_learning_curves(record_dict, sample_step=5):\n",
    "    # build DataFrame\n",
    "    train_df = pd.DataFrame(record_dict[\"train\"]).set_index(\"step\").iloc[::sample_step]\n",
    "    val_df = pd.DataFrame(record_dict[\"val\"]).set_index(\"step\")\n",
    "\n",
    "    # plot\n",
    "    for idx, item in enumerate(train_df.columns):\n",
    "        plt.plot(train_df.index, train_df[item], label=f\"train_{item}\")\n",
    "        plt.plot(val_df.index, val_df[item], label=f\"val_{item}\")\n",
    "        plt.grid()\n",
    "        plt.legend()\n",
    "        # plt.xticks(range(0, train_df.index[-1], 10*sample_step), range(0, train_df.index[-1], 10*sample_step))\n",
    "        plt.xlabel(\"step\")\n",
    "\n",
    "        plt.show()\n",
    "\n",
    "# plot_learning_curves(record)  #横坐标是 steps"
   ],
   "outputs": [],
   "execution_count": 15
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "# 网格搜索，for循环实现"
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-02-26T10:01:21.973045Z",
     "start_time": "2025-02-26T10:00:47.827257Z"
    }
   },
   "source": [
    "for lr in [1e-2, 3e-2, 3e-1, 1e-3]:\n",
    "\n",
    "    epoch = 100\n",
    "\n",
    "    model = NeuralNetwork()\n",
    "\n",
    "    # 1. 定义损失函数 采用MSE损失\n",
    "    loss_fct = nn.MSELoss()\n",
    "    # 2. 定义优化器 采用SGD\n",
    "    # Optimizers specified in the torch.optim package\n",
    "    optimizer = torch.optim.SGD(model.parameters(), lr=lr, momentum=0.9)\n",
    "\n",
    "    # 3. early stop\n",
    "    early_stop_callback = EarlyStopCallback(patience=10, min_delta=1e-3)\n",
    "\n",
    "    model = model.to(device)\n",
    "    record = training(\n",
    "        model, \n",
    "        train_loader, \n",
    "        val_loader, \n",
    "        epoch, \n",
    "        loss_fct, \n",
    "        optimizer, \n",
    "        early_stop_callback=early_stop_callback,\n",
    "        eval_step=len(train_loader)\n",
    "        )\n",
    "    print(\"lr: {}\".format(lr))\n",
    "    plot_learning_curves(record)\n",
    "    model.eval()\n",
    "    loss = evaluating(model, val_loader, loss_fct)\n",
    "    print(f\"loss:     {loss:.4f}\")"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "72ad5261be0e455995b2895c647792d1"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 87 / global_step 4002\n",
      "lr: 0.01\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.3098\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "7fe7db53cfca4767a89d60cf0faaf131"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 9 / global_step 414\n",
      "lr: 0.03\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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I+NvO7RICvrvrTavX+/T508++WRp3ry5bN261dzXsUN79+71K1NaWmpmknnHFen1nj17/Mp47x+rTPnny/9cVWUAAMDxKy71yJ68wga3vcYJCUIZGRnyyy+/mCnsqm/fvpKTk2Nmg3ktWrRIPB6PGb/jLaMzycoPdtLmvc6dO5tuMW+ZhQsX+r2WltHHlXataeApX0abynQckrcMAAA4ftkHC8VxROKiI6V541/H94ZlENL1fnQGl168g5L19s6dO81zOotr5cqVsmPHDhNCdMbWKaecYgYyq65du5pxRLfccousXr1avvrqKxk7dqzpUtMZY+r66683A6V1arxOs585c6aZJVZ+/M64cePM7LOnnnpKNm/ebKbXr1mzxhxL6RoGd955pxmo/dFHH8n3338vN9xwg3kNnWYPAADckZFT0CDXEKrTGCENGxdddJHvvjecjB49Wl566SWzEOIbb7xhWn00dOhAY53aXn7sjU6P18CiY4Z0ttiVV15p1vspP7tLZ2qNGTNGevXqZbrWdGHE8msNnXvuufLOO++Y6fE6ILtTp05mxtjpp5/uK3PvvfeadY/05/R8zj//fBOedAFGAADg7marDWmPsToHoX79+pk1eqrz+eefH/MYOkNMQ0xNdJD1F198UWOZq6++2lyqo6n0oYceMhcAAFC/m62mN8AgxF5jAADAte01GhqCEAAAsLZrjCAEAABcaRFKb1I/uzDUJ4IQAACoszKPI7vpGgMAADbam1copR5HoiMjpFVyw5uVTRACAADHPT4oLSVeoiIb1hpCiiAEAACsnDGmCEIAAMCFNYQa3kBpRRACAADHHYQa4tR5RRACAADHP3WerjEAAGCbzANHN1ylRQgAANjEcZxyiykShAAAgEV+yS+WwhKPRESItE4hCAEAAAvXEGqZFCex0Q0zUjTMswYAAEGX2cDXEFIEIQAAcFwtQg11DSFFEAIAAHWS0cBnjCmCEAAAqBO6xgAAgLUyGviq0oogBAAAjqtFqB1BCAAA2OTg4RLJKyw1t9vQNQYAAGycMda0UawkxkZLQ0UQAgAAVg6UVgQhAABQ981WCUIAAMDWGWPpDXigtCIIAQCAuneNEYQAAIBtMhkjBAAAbJ811pYWIQAAYJOC4lL5Jb+4wW+4qghCAACgVnYf7RZLiouWlIQYacgIQgAAwLo9xrwIQgAAwMqB0oogBAAArFxDSBGEAACAlTPGFEEIAADUsWusYc8YUwQhAABQK7QIAQAAKxWXemRPXqG5zRghAABglayDh8VxROJjIqVZo1hp6AhCAACg1t1ibVITJCIiQho6ghAAAAhYRhitIaQIQgAAoNYtQuEwPkgRhAAAQB0WU2z4U+cVQQgAAAQsM6fAXNM1BgAA7F1MsQlBCAAAWKTM40hWzpE1hGgRAgAAVtmTWyilHkeiIyOkVXK8hAOCEAAAqFW3WOvUeImKbPhrCCmCEAAAqN0eY2HSLaYIQgAAwLpd570IQgAAICAZBwrCajFFRRACAAC1WkwxXKbOK4IQAACoVddYOmOEAACATRzHkd1htpiiIggBAIBj+iW/WApLPBIRIdI6hSAEAAAsHB/UKileYqPDJz6EzzsBAAD1v4ZQk/BpDVIEIQAAYN2u814EIQAAcEy0CAEAALF9jFA6QQgAANi7vUaChBOCEAAACLhrjBYhAABglYOHSySvqNTcbkOLEAAAsHGz1WaNYiUxNlrCCUEIAABYOWNMEYQAAICVA6UVQQgAAATWIkQQAgAAtskI0xljdQpCy5Ytk8svv1zatGkjERERMmfOHL/nHceRCRMmSOvWrSUhIUEGDBggP/74o1+Z/fv3y6hRoyQ5OVlSU1Pl5ptvlkOHDvmVWb9+vVxwwQUSHx8v7dq1k8cff7zSucyaNUu6dOliynTv3l3mzZtX63MBAAABdo01SRSxPQjl5+dLjx49ZNq0aVU+r4Hl+eefl+nTp8uqVaukUaNGMnjwYCksLPSV0RC0YcMGWbBggcydO9eEq1tvvdX3fG5urgwaNEg6dOgga9eulSeeeEImTZokL7/8sq/M8uXLZeTIkSZEffvttzJs2DBz+eGHH2p1LgAAwN4xQtpqUmf647Nnz/bd93g8TlpamvPEE0/4HsvJyXHi4uKcd99919zfuHGj+bmvv/7aV+bTTz91IiIinMzMTHP/xRdfdJo0aeIUFRX5yvz5z392Onfu7Lt/zTXXOJdddpnf+fTp08f5wx/+EPC5HMvBgwfNueq124qLi505c+aYa9Qd9egO6tEd1KM7qMfQqsf8ohKnw5/nmktOQcP4ndTm+9vVxQC2b98u2dnZpgvKKyUlRfr06SMrVqyQ6667zlxrd1jv3r19ZbR8ZGSkabUZPny4KXPhhRdKbGysr4y25Dz22GNy4MABadKkiSkzfvx4v9fXMt6uukDOpaKioiJzKd8ypUpKSszFTd7juX1c21CP7qAe3UE9uoN6DK16/GnfkaErSfHRkhjdMH4vtTlHV4OQBg/VqlUrv8f1vvc5vW7ZsqX/SURHS9OmTf3KdOzYsdIxvM9pENLrY73Osc6loilTpsjkyZMrPT5//nxJTKyfflHtHsTxox7dQT26g3p0B/UYGvW48UCEiERJUmRJpbG4oaqg4MgCkIEIr+Uhj9P999/v18qkLUI6UFvHK+nAbrfTqn44Bw4cKDExMa4e2ybUozuoR3dQj+6gHkOrHnNW7xLZvEm6tGspl156pjQE3h6dEx6E0tLSzPWePXvMTC0vvd+zZ09fmb179/r9XGlpqZlJ5v15vdafKc97/1hlyj9/rHOpKC4uzlwq0g9Qff0x1uexbUI9uoN6dAf16A7qMTTqMTuv2Fy3a5rYYH4ftTlPV9cR0u4sDSALFy70S2U69qdv377mvl7n5OSY2WBeixYtEo/HY8bveMvoTLLyfXyaajt37my6xbxlyr+Ot4z3dQI5FwAAYO/2GnUKQrrez7p168zFOyhZb+/cudOsK3TnnXfKI488Ih999JF8//33csMNN5g1h3Rqu+ratatccsklcsstt8jq1avlq6++krFjx5rBy1pOXX/99WagtE6N12n2M2fOlOeee86v22rcuHHy2WefyVNPPSWbN2820+vXrFljjqUCORcAABDYhqvpYbiGUJ26xjRsXHTRRb773nAyevRomTFjhtx7771mrSFdF0hbfs4//3wTWHTRQ6+3337bBJb+/fub2WJXXnmlWe+n/OwuHaA8ZswY6dWrlzRv3twsjFh+raFzzz1X3nnnHXnggQfkL3/5i3Tq1MnMGDv99NN9ZQI5FwAAYOkaQnUJQv369TMrNldHW2Ieeughc6mOzhDTEFOTM844Q7744osay1x99dXmcjznAgAAqlZc6pG9eUeWlaFrDAAAWCXr4GHRto/4mEhp1ujXtf3CCUEIAADUuNmqdotpL0s4IggBAIBjzBgLz4HSiiAEAACqlBHmA6UVQQgAANTYIpQepgOlFUEIAAAcYw0hghAAALBMJl1jAADARmUeR7IPFob1GkKKIAQAACrZk1sopR5HoiMjpGVS+O7IQBACAADVriHUOjVeoiLDcw0hRRAC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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     nan\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "897b58e06e3441dc8f57b9586d433bfa"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 9 / global_step 414\n",
      "lr: 0.3\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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DY1p0UG0Ggx0ho+GGB1LctFFF7XYcep7vf766/Lqq6+aWVPaRaQDjbVVSLVq1coErKuuusoEk+eee850J+m0ax1389FHH5lZVNpi88ADD5gp2GPGjGmx4wcAnG5bXoG4PSJtE6MlJVoCihYYm9EfdG3NqMkKBXVbaqzuGMuUKVNq3a/bpVTfNOXGnhpAVwiu+/px48aZS30uv/xyc/qB+migeffddxv1vgCAlu8+6p2p06dLJJBogQEAAE0MMMkSaAQYNMpdd91lxtzoRbt4zjvvPHOt9/U5AEDoyzk5A6m6BSaw6EJCo+j4FR1/o3Swra4zo+FF18LRIAMACG2VLrdszSv0tsBkn3lZMb8jwKBRdDaQXqwAU1BQYIKLLxbzAwAEv12HiqSiyi2JMZGS1TpOqk9kEzj8+gAAgEavwNu7vf7x6ptFWM8FAQYAADR6AG+f9sExbIAAAwAAGn0KgT7tUyQYEGAAAMAZ6TpfObm0wAAAABv55mipFJZVSXRkuFyQlijBgADjMLpC74IFCxq1rZ5D6a233vL7MQEA7NF91CM9SaIigiM6BMdRAACAoJUdZAN4FQEGAACc0RbvAF4CTHDRkxBWFDf+UlnStO3PdKnnBIoNef7556V9+/ZmIbmarrvuOvnhD38ou3btMrfT09PNKrmXXHKJrFixwmfVtHnzZnP26ISEBOnatav86Ec/MivyWvTkjJdeeql5Xs82fdlll8mePXvMc//5z3/kyiuvlKSkJLMA3qBBg2T9+vU+OzYAQAucAylIZiApVuJVGkjmtm904mvly/e+/4BIdEKjNv3e974nP/nJT+T999+X4cOHm8eOHj1qzty8dOlSEyauueYaefTRRyUmJkb++te/ytixY2X79u3SsWPHczrM4uJiGT16tAwZMkTWrl1rzmR9zz33yNSpU2XhwoVSVVUl119/vUyaNEleeeUVqaiokHXr1plxNOq2226TCy+8UJ599lmJiIiQjRs3SlRU1DkdEwDA/w4WlsmhwnLRtet6BcE5kCwEGBtp3bq1jBkzRl5++WVvgHnzzTelbdu2pnVDl/UfMGCAd/uHH35YFi9eLG+//bYJGudC37OsrMyEori4OBOInnrqKdPi85vf/MaEkRMnTsh3vvMdOf/8881revXq5X393r175b777pOePXua+926dTun4wEAtGzrS9d2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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     nan\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "1c4b80a15ddf4e7caec95c083567b07e"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lr: 0.001\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGwCAYAAAD16iy9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXSdJREFUeJzt3Qd4VGXWB/AzM2kECCWh9957E1BEaQIqdlf57F2wLOoq6qLYYHVlde2rq7juIqwsiAUQpCO9N+m9hpoQ0pP7Pf935k7uTGaSSTKZO7n5/55nniSTycyduZO55573vOe1aZqmCREREVEQ2INxJ0RERETAwIKIiIiChoEFERERBQ0DCyIiIgoaBhZEREQUNAwsiIiIKGgYWBAREVHQREiI5ebmyvHjx6Vy5cpis9lC/fBERERUDGh7dfHiRalbt67Y7fbwCSwQVDRo0CDUD0tERERBcOTIEalfv374BBbIVOgbFhcXF7T7zcrKknnz5sngwYMlMjIyaPdLRcP9EB64H8IH90V44H4oueTkZJUY0I/jYRNY6MMfCCqCHVjExsaq++SbxjzcD+GB+yF8cF+EB+6H4CmsjIHFm0RERBQ0DCyIiIgoaBhYEBERUdCEvMaCiIisB60EMjMzJZxrLCIiIiQ9PV1ycnLM3pywhNoTh8MR2sDi1VdflfHjx3tc16pVK9m5c2eJN4SIiMomBBQHDhxQwUU492CoXbu2mpHIHkr+Va1aVb1OJXmNipyxaNeunfz66695dxDBpAcRUXmFA/aJEyfUmS6mIhbUOMlMCHpSUlKkUqVKYbuNZu/H1NRUSUxMVD/XqVOn2PdV5KgAgQSiGSIiouzsbHVAQjdGTOcM96GamJgYBhZ+VKhQQX1FcFGzZs1iD4sUObDYs2ePegNh5/Tu3VsmTJggDRs29Hv7jIwMdTE22NDHu3AJFv2+gnmfVHTcD+GB+yF8WH1f4PMdZ7s46Qz3oRD9azhvp9lwbMdrlJaWJtHR0R6/C/Q9bNP0VzsAc+bMUakk1FUg9YV6i2PHjsm2bdv8duLyVZcBU6ZMCevoloiIAs9iYxgkKirK7M2hEkJWB3UoJ0+eVNkoI2Sm7rzzTklKSiqwwWWRAgtvFy5ckEaNGsmkSZPkgQceCDhjgTfgmTNngt55c/78+TJo0CB2VTMR90N44H4IH1bfF5hlgQNR48aN1dluuC+gxQUwC9+fBw8eVMdp7/2J43dCQkKhgUVESatHW7ZsKXv37vV7G6RSvNMpgH+w0vgnK637paLhfggP3A/hw6r7AlM3caBG3UI41y7owx/6tpJveG3wGvl6vwb6/i3Rq4thkX379pWoepSIiKgsQ7bmvffeC8p9LV68WB3YMSJQVhUpY/Hss8/Kddddp4Y/sPz5K6+8oqpG77jjDjHdxRMSm3FaJCcTYZXZW0NERGGsf//+0rlz56AEBGvXrpWKFSsGZbusoEiBxdGjR1UQcfbsWalRo4ZcfvnlsmrVKvW92SL+OUAGXUqUrL49ROp1MntziIioDENNBoZ5AunVFA7HwHBSpKGQqVOnqkwFijERZODnZs2aSViwu+bb5npWsRIRUYgbLWVmm3IJdC7CvffeK0uWLJH3339fDTvgMnnyZPUVsx+7deumagOXL1+uhvtHjBghtWrVUs21evTo4dEk0tdQiM1mky+++EJuvPFGNfuxRYsW8sMPPxT7Nf3f//6nmlNim/BY7777rsfvP/74Y/UYKLbEdt5yyy3u302fPl06dOigelTEx8fLwIED5dKlS1KarNM20+58KjYGFkREpknLypG2434x5bF3vDZEYqMKP6whoNi9e7e0b99eXnvtNXXd9u3b1dcXXnhB/vrXv0rTpk2lWrVqasbLsGHD5M0331QH9n/961+qJGDXrl0F9nAaP368vP322/LOO+/IBx98ICNHjpRDhw5J9erVi/Sc1q9fL7fddptq3XD77bfLihUr5PHHH1dBAgKkdevWyZNPPinffPON9OnTR86dOyfLli1Tf4u2EBhlwHYgyMGsGPyuBJNBy2dgIblcXIaIiPyrUqWK6rmBbILeSVpf8wqBBqYG6xAIdOqUN7z++uuvy8yZM1UGYvTo0X4f495773XXH7711lvy97//XdasWSPXXHNNkbYV7RwGDBggf/7zn9XPmIm5Y8cOFbDgMQ4fPqzqO6699lo1lRY1kF26dHEHFuhFcdNNN6nrAdmL0mahwIJDIUREZqsQ6VCZA7Meu6S6d++eb/YjsgU///yz+0CNrpQ4oBekY8eO7u9x4EffB30djqL4/fff1VCMUd++fdXQC2pAEAQhaECGBUELLvoQDAIiBCUIJoYMGSKDBw9WwyTIxJQmy0zmTctxNjxJNzTjIiKi0EJ9AYYjzLgEo/GV9+wOzIZEhgJZBwwjbNq0SR2oC1siPtJrdiK2rTRaiSNLsWHDBvn2229V64dx48apgALTVTFrE83ZUDfStm1bNSSDztlYibY0WSawOHLB2cP8dHKq2ZtCRERhDkMhOOMvzG+//aaGHJAFQECBoRN0pgyVNm3aqG3w3iYMieiLhGHmCooyUUuxZcsWtX0LFy50BzTIcKDmY+PGjep5I1AqTZYZCsm1OUQ0jIRYc6EfIiIKHsyuWL16tToIY7aHv2wCZlvMmDFDFWziII1ah1AuYvbMM8+omSio7UDx5sqVK+XDDz9UM0Hgp59+kv3790u/fv3UEMfs2bPV9iEzgee3YMECNQSC1Urx8+nTp1WwUposk7HIdT2V3BwGFkREVDAMceCMH0ME6EPhr2YCxZM4YGPGBYIL1Cp07do1ZNvZtWtX+e9//6vaO2AWC4Y6UGCKLIq+tAYCn6uvvloFDJ9++qkaFsH0VNR1LF26VM1qQYbj5ZdfVlNVhw4dWqrbbKGMRYQzY5HD4k0iIioYDrQ4+zfSD9bemQ19WEE3atQoj5+9h0Y0H9M5A23RjY6g3n9/8803q4svaFSJNuC+INCYO3euhJplMhY5GArBDmVgQUREZBq7pWos1Ep7DCyIiCg8Pfroo6qmw9cFv7MCaw2FqIwFayyIiCg8vfbaa6q+wxfURFiBZQILjUMhREQU5mrWrKkuVma5oZBcdt4kIiIyjWUCC2YsiIiIzGehwEKvsWBgQUREZBbLDYUwsCAiIjKP3Wqrm2qssSAiIjKN5YZCuGw6ERGVNnTkxNLlgbDZbPL9999LeWGdwELPWHAohIiIyDTWK95kxoKIiMg0lgksxO4MLGy5OWZvCRFR+YUFtDIvmXPxsfiXL//4xz+kbt26+ZY/HzFihNx///2yb98+9X2tWrVUq20sW/7rr78G7SXaunWrWo20QoUKEh8fLw8//LCkpKS4f49FxXr27CkVK1ZUq5f27dtXDh06pH63efNmueqqq6Ry5cqqU2e3bt1k3bp1Ek4irDYUIrls6U1EZJqsVJG36prz2C8eF4mqWOjNbr31VnniiSdk0aJFMmDAAHXduXPn1Eqgs2fPVgd5LDX+5ptvSnR0tPzrX/9SS6bv2rVLGjZsWKJNvHTpklp6vXfv3rJ27VpJTEyUBx98UEaPHi2TJ0+W7OxsueGGG+Shhx5Sy59nZmbKmjVrVJ0GjBw5Urp06SKffPKJWvZ906ZNEhkZKeEkwmqzQoQZCyIiKkC1atVk6NChMmXKFHdgMX36dElISFDZALvdLp06dXLf/vXXX5eZM2fKDz/8oAKAkpgyZYqkp6erYAUZCfjwww9V4PKXv/xFBQlJSUly7bXXSrNmzdzLn+sOHz4szz33nLRu3Vr93KJFCwk31gksOCuEiMh8kbHOzIFZjx0gnPkjK/Dxxx+rrMR//vMf+cMf/qCCCmQsXn31Vfn555/lxIkTKouQlpamDuol9fvvv6ugRQ8qAEMdGJZBRqRfv35y7733qqzGoEGDZODAgXLbbbdJnTp11G3HjBmjMhzffPON+h2yL3oAEi6sU2PhYGBBRGQ6pOwxHGHGxTVcEAhkCDRNU8HDkSNHZNmyZSrYAKw+igzFW2+9pa7HcEOHDh3UsEQofPXVV7Jy5Urp06ePTJs2TVq2bCmrVq1Sv0PAs337dhk+fLgsXLhQ2rZtq7Y1nFiueJNDIUREVJiYmBi56aabVKYCtQytWrWSrl27qt/99ttvKmtw4403qoCidu3acvDgwaA8bps2bVQBJmotdHg8ZEqwDTrUUYwdO1ZWrFgh7du3V0MoOgQaf/zjH2XevHnqOSAQCSeWCyxsGjMWRERUOGQokLH48ssv3dkKvW5hxowZKlOBIODOO+/MN4OkJI8ZExMj99xzj2zbtk0VkKKQ9K677lKzUA4cOKACCmQsMBMEwcOePXtUQILhGNR4YNYIfoeABAWgxhqMcBBhvYwFAwsiIiocpnxWr15d1TYgeNBNmjRJTTvFUAQKOp9//nlJTk4OymPGxsbKL7/8Ik899ZSaxoqfb775ZvWY+u937twpX3/9tZw9e1bVVowaNUoeeeQRVeuB6+6++245deqU2jZkLMaPHy/hxDKBhc2dseBQCBERFQ7DD8ePH/fZrhv1C0Y4uBsVZWhE8+qvgeEV7/vXIWvhr2YiKipKDduEO8sMhdhcxZtskEVERGQeywQWrLEgIqJQQ/EnunP6urRr107KIwsNhTgbZHEohIiIQuX666+XXr16+fxdZJh1xAyVCKv1sbAzsCAiohDBmh24kAWHQmyuzpsMLIiIQs+7QJHKpmBMq7VMxkJz1VgwsCAiCh2k+7FA1unTp6VGjRruxbLC8YCJzplYpwOzQSh/YIjXB/sRrw9moEh5DyzE4ayxsLN4k4goZLDCZv369eXo0aNB605ZWgdONJjCUuXhGvyEA/TRwAquJQm+rBNYuDMWwemORkREgcEMCHSrzMrKknCFbVu6dKla5Ku8FlUGEiRGRESUOPCKsFqNhUOYsSAiMuOghEu4wrahcyXaaTOwKF3WGWhijQUREZHpLNd50y4MLIiIiMxit9qsEAczFkRERKaxTGBhszvHzDgUQkREZB7LBBbiaunNoRAiIiLzWK7GwsHAgoiIyDSWCSy4VggREZH5LBNYMGNBRERkPusEFu5ZIey8SUREZBbrBRbMWBAREZnGcp03GVgQERGZxzKBhZ01FkRERKazYPFmLtbHNXtziIiIyiXrBBauoRAll1kLIiIiM1guY6Hkcul0IiIiM1gmsLA7nGuFKLlZZm4KERFRuWWZwEIczrVCFGYsiIiITGGZwMLBGgsiIiLTWSawsNsdkqPZnD8wY0FERGQKCwUWNskW13AIAwsiIiJTWCewsAkDCyIiIpNZJ7Cw2yTHHViwxoKIiMgMlgksHDYMhbieDjMWREREZS+wmDhxothsNnn66aclHIZC8jIWDCyIiIjKVGCxdu1a+eyzz6Rjx44SDli8SUREVEYDi5SUFBk5cqR8/vnnUq1aNQkHdhtqLDgUQkREZCZDV6nAjRo1SoYPHy4DBw6UN954o8DbZmRkqIsuOTlZfc3KylKXYMnNyZYczSGC2SGZGaIF8b4pcPo+Dea+paLjfggf3Bfhgfuh5AJ97YocWEydOlU2bNighkICMWHCBBk/fny+6+fNmyexsbESLClZIpe5MhYrflsu5yufDtp9U9HNnz/f7E0g7oewwn0RHrgfii81NTX4gcWRI0fkqaeeUjsmJiYmoL8ZO3asjBkzxiNj0aBBAxk8eLDExcVJsJxJTpXkLc4ai149uom9ab+g3TcVLaLF+2PQoEESGWlYGI5CivshfHBfhAfuh5LTRxyCGlisX79eEhMTpWvXru7rcnJyZOnSpfLhhx+qIQ+HcTEwEYmOjlYXb9ixwdy50VGR7lkhNpvGN47Jgr1/qXi4H8IH90V44H4ovkBftyIFFgMGDJCtW7d6XHffffdJ69at5fnnn88XVIS6eNPdxyKHxZtERERmKFJgUblyZWnfvr3HdRUrVpT4+Ph815szK8QZ2OTmsDiHiIjIDJbpvOnsY+F8OhozFkRERGVnuqnR4sWLJRwYO28ysCAiIjKHtdYK0ezunhZEREQUepYJLGzGjEUuayyIiIjMYKHAIm+tEA6FEBERmcMygQUwsCAiIjKXpQKLXH1WCBchIyIiMoWlAgvOCiEiIjKXxQILLptORERkJmsFFjZ9VggDCyIiIjNYK7Bg500iIiJTWSywcC2CxowFERGRKRhYEBERUdBYLLDgdFMiIiIzWTJjYcvNMXtTiIiIyiWLBRaup5PDtUKIiIjMYKnAItddY8GMBRERkRksFVhk609HY40FERGRGSyZsbCxeJOIiMgUFp1uyqEQIiIiM1grsLBxrRAiIiIzWSuw4FAIERGRqSwZWIjGoRAiIiIzWDOwYMaCiIjIFJasseBQCBERkTms2SCLQyFERESmsGRLb2YsiIiIzGGxwIJ9LIiIiMxkzc6bbOlNRERkCosOhTBjQUREZAZrBRY2TjclIiIyk6UCi1w9Y8GhECIiIlNYKrBgS28iIiJzWSqwyNUbZLGPBRERkSksFViwpTcREZG5rDndlLNCiIiITGGxwILFm0RERGay5HRT1lgQERGZw1qBBWeFEBERmcqagQUzFkRERKaw5nRTFm8SERGZwqIZCw6FEBERmcFSgYXmnhXCjAUREZEZLJmxsCOw0DSzN4eIiKjcsVRgkauvbqp+YNaCiIgo1KwVWIjN8APrLIiIiELNmmuFAAMLIiKikLPkdFPnDwwsiIiIQs2Ss0IUBhZEREQhZ6nAQmx2ydFcdRYMLIiIiELOWoGFiGTrdRYMLIiIiELOUoGFzWYo4GRgQUREFHLWCixUxsL1lNjHgoiIKOQsFVgAMxZERETmsVRgYbexxoKIiMhMlgosgIEFERGReSxXY5HjrrFgYEFERBRq1gosMBSi6RkLFm8SERGFmqUCC2DGgoiIyDwWnG7KGgsiIiKzWCuwYIMsIiIiU1krsGCDLCIiIlNZKrAAZiyIiIjKSGDxySefSMeOHSUuLk5devfuLXPmzJHwzFgwsCAiIgrrwKJ+/foyceJEWb9+vaxbt06uvvpqGTFihGzfvl3CrsYiJ8vszSEiIip3Iopy4+uuu87j5zfffFNlMVatWiXt2rXz+TcZGRnqoktOTlZfs7Ky1CVY9PvK1pyxUnZWhmhBvH8q2n4I5r6louN+CB/cF+GB+6HkAn3tihRYGOXk5Mh3330nly5dUkMi/kyYMEHGjx+f7/p58+ZJbGysBJNd7O6MxZaNG+TI4eDePwVu/vz5Zm8CcT+EFe6L8MD9UHypqakB3c6maZpWlDveunWrCiTS09OlUqVKMmXKFBk2bJjf2/vKWDRo0EDOnDmj6jSCGUnd88kCefTCuzLAsVGyh78vWueRcjE9S+ZsOyWD29aSqrGRQXs88r8f8I87aNAgiYzk620W7ofwwX0RHrgfSg7H74SEBElKSirw+F3kjEWrVq1k06ZN6o6nT58u99xzjyxZskTatm3r8/bR0dHq4g07Ntg717hWSIRNw4PIn6Zsll9/PyU/bDkp0x7xn1mh4CqN/UtFx/0QPrgvwgP3Q/EF+roVObCIioqS5s2bq++7desma9eulffff18+++wzCcfOmwgqYPWBc2ZuGhERUblQ4j4Wubm5HkMd4bNWCBtkERERhVqRMhZjx46VoUOHSsOGDeXixYuqvmLx4sXyyy+/SLhMN83SnxL7WBAREYV3YJGYmCh33323nDhxQqpUqaKaZSGoQDFMOFA1Fq7ppgwsiIiIwjyw+Oc//ynhjKubEhERmctaa4WozpussSAiIjKLpQILZiyIiIjMZbnAgqubEhERmcdygQVXNyUiIjKPtQIL4+qmrLEgIiIKOUsFFsCMBRERkXksFVg4+1joGQsujUtERBRq1gosbJwVQkREZCZLBRbAPhZERETmsVRgwT4WRERE5rJWYOHReZOBBRERUahZK7BgxoKIiMhUlgosgH0siIiIzGO5oZAsZiyIiIhMY8E+FqyxICIiMovlAgvWWBAREZnHcoEFayyIiIjMY6nAApEF1wohIiIyj4UzFgwsiIiIQs1igYXGjAUREZGJLNh5kxkLIiIis1gqsBCPWSEs3iQiIgo16/axyMkye3OIiIjKHWsFFmpWCIdCiIiIzGKpwALyVjflUAgREVGo2a32ZJixICIiMo+lAgvgrBAiIiLzWLDGgn0siIiIzGKtwIJrhRAREZnKUoEFMGNBRERkHusNhWgRzh8YWBAREYWctQILZiyIiIhMZd0aCy1HRNPM3iQiIqJyxVKBhd04KwRYwElERBRSlgss3BkL4HAIERFRSFmwxoKBBRERkVksmLEwDoUwsCAiIgoliwcWrLEgIiIKJcsFFprYJdc95TTL7E0iIiIqV6wVWLi+ciEyIiIic1iu8ybk2Ngki4iIyAyWGwoBLkRGRERkDosHFsxYEBERhZK1AgvXVwYWRERE5rBoxoI1FkRERGawZvEmMxZERESmsFvxybjberN4k4iIKKSsFVjYnMukM2NBRERkDosFFt4ZCwYWREREoWStwML1lcWbRERE5rB4xoI1FkRERKFkyVkh2cxYEBERmcKaQyEaayyIiIjMYK3AghkLIiIiU1k0sGCNBRERkRmsGVhorqeVk2Xq9hAREZU3lgosXHEFh0KIiIhMYsmMRRaLN4mIiExh7aEQBhZEREQhZfGhEBZvEhERhW1gMWHCBOnRo4dUrlxZatasKTfccIPs2rVLwoWDa4UQERGVncBiyZIlMmrUKFm1apXMnz9fsrKyZPDgwXLp0iUJp86bXN2UiIjIHBFFufHcuXM9fp48ebLKXKxfv1769esnZmONBRERURkKLLwlJSWpr9WrV/d7m4yMDHXRJScnq6/IduASLLgvPf2iD4XkZGfmuw2VLv015mttLu6H8MF9ER64H0ou0Neu2IFFbm6uPP3009K3b19p3759gXUZ48ePz3f9vHnzJDY2Vkqz8+be3TtFpJP797Nnzw7q45F/GCoj83E/hA/ui/DA/VB8qamppRtYoNZi27Ztsnz58gJvN3bsWBkzZoxHxqJBgwaqNiMuLk6CGUnNnTffo8aiedMmIgfzbjNs2LCgPR753w/4xx00aJBERkaavTnlFvdD+OC+CA/cDyWnjziUSmAxevRo+emnn2Tp0qVSv379Am8bHR2tLt6wY4O9c/OGQpzfOSQ332NSaJTG/qWi434IH9wX4YH7ofgCfd2KFFhomiZPPPGEzJw5UxYvXixNmjSRcIJZIRgOyZsVwj4WREREoRRR1OGPKVOmyKxZs1Qvi5MnT6rrq1SpIhUqVJBw4LDbuFYIERFRWehj8cknn6iZIP3795c6deq4L9OmTZNwYbfZJIdrhRAREZmiyEMh4U5lLHIYWBAREZnBUmuF6IFFDodCiIiITGG5wCJC1VgwY0FERGQGywUWkQ47MxZEREQmsVxgwYwFERGReawXWDhQY8E+FkRERGawXmDBPhZERESmsWBgYWcfCyIiIpNYL7BwMGNBRERkFksGFqyxICIiMoflAotIu12yOCuEiIjIFBbPWDCwICIiCiXrBRZ2O2ssiIiITGK9wIIZCyIiItNYLrCI9Oi8yeJNIiKiULJcYBGBtUI0DoUQERGZwXqBBdcKISIiMo3lAotIVWPhelo5DCyIiIhCyZJDIcxYEBERmcN6gYWds0KIiIjMYtGMBYs3iYiIzGDJ6aZcK4SIiMgclgssuLopERGReawXWNjRx4I1FkRERGawaMaCgQUREZEZLFpj4XpaGmosNLM3iYiIqNywXGDhcNgkS89Y4GfJNXV7iIiIyhNr1lgYAosI4cwQIiKiULFgYGGosWDGgoiIKKQsF1g4jDUWzFgQERGFlEVbeuc9LQcDCyIiopCxZMZCE7vkup5aBIdCiIiIQsaSGQvQCziZsSAiIgodywUWdj2wsLkyFjYGFkRERKFi2YxFritjweJNIiKi0LFkjYXnUAhrLIiIiELF8oEFMxZEREShY/niTc4KISIiCh3LBRYOu/MpZbuKNzkrhIiIKHTKQcaCgQUREVGoWLfGQtMzFhwKISIiChXLBhb6QmTsY0FERBQ6lg8smLEgIiIKHcvWWLgzFqyxICIiChkLZyw4K4SIiCjUrBtYaOxjQUREFGoWHgphxoKIiCjULJyxcK1uyowFERFRyFg3Y+EaCmHGgoiIKHQsF1jYXYFFluupsY8FERFR6Fg4Y6EPhTCwICIiChXLBRZskEVERGQeCy9CxowFERFRqJWDjAUDCyIiolCxYGBh91o2nUMhREREoWL54k1mLIiIiELHcoGFK65gxoKIiMgElgssbDabqrNwt/RmHwsiIqKQsVxgAQgs8jIWDCyIiIhCxZKBRUyEXbLYx4KIiCjkLBlYVK8YxYwFERGRCSwbWOQtm86MBRERUdgGFkuXLpXrrrtO6tatqwolv//+ewk38ZWiJce1uikzFkRERGEcWFy6dEk6deokH330kYSreJWxYOdNIiKiUIso6h8MHTpUXQKVkZGhLrrk5GT1NSsrS12CRb8vfK1aIcKwVkjeUEgwH48K3w9kHu6H8MF9ER64H0ou0NeuyIFFUU2YMEHGjx+f7/p58+ZJbGxs0B9v/vz5cvK4TRL04k1DH4vZs2cH/fHI/34g83E/hA/ui/DA/VB8qamp4RFYjB07VsaMGeORsWjQoIEMHjxY4uLighpJ4Q0zaNAgSd2aKLuPzstXYzFs2LCgPR4Vvh8iIyPN3pxyi/shfHBfhAfuh5LTRxxMDyyio6PVxRt2bGnsXNxn9UoxPmss+GYKndLav1Q03A/hg/siPHA/FF+gr5slp5tWqRDJtUKIiIhMYNnAIkWLUd/H2wJL3RAREVHJFXkoJCUlRfbu3ev++cCBA7Jp0yapXr26NGzYUMIlsNiiNVXfd7AdkCjJkkxh6ouIiCjsMhbr1q2TLl26qAugMBPfjxs3TsIFAouDWm05o8VJtC1L2tsOmL1JRERE5UKRMxb9+/cXTdMknMVGOSTCbpf1uS1liGOddLfvkg05LdV2o1soERERlQ5L1lggeIiOsMu63Jbq5+723eprmMdDREREZZ4lAwuIjnSojAV0te9BWGH2JhEREVmedQOLCLts05pIhhYpCbZkaWI7ydCCiIiolFk2sIiKsKuZIJtds0NQZxHutSFERERlnaUzFqAPh3Sz7WbGgoiIqJRZOmMBegFnD/suue2zlbL1aJLJW0ZERGRdlg0soiMcHhmLZvYTcvDwYbnz81UmbxkREZF1WTiwcD61C1JZ9ubWVd93s++RixnZkp6VtzAZERERBY/lh0LAu5/Fx4v3mbZdREREVmbZwCLCntdhc73mKuC071Jfv11z2LTtIiIisjLLBhbpWXnLpa/NbaW+dnQtSNasRkUTt4yIiMi6LBtYXMrMdn/vvSBZhUhnYScREREFl2UDi7RMY4GmzT07BI2yktKyTNsuKj+W7D4tfSculN/2njF7U4iIQsaygUWqR2DhWcB5wQKBBbuIhr97vlwjxy6kycgvVpu9KUREIWPhwCJvKASMC5LtP50ipy9mhGxbVu8/K3tOXQza/S3ceUo6jp8nv2w/GbT7JCIiCgbLBhbejAuSvRYxWWYs36SuX7wrUXYcT1ZDJwt+PyWPfrNezqYEL+g4fDZVbv/HKhn0t6VBu8/7J6+Ti+nZ8sg364N2n0RERMEQIRb1wR1d5bH/rJeXhrWR56ZvUQuSTc4ZIo9E/CR3R8yXi6uWy6rE++XR37tLukR7/G2upsk/7u4uB85cki1HL8j1neqKzZY3fbUodhsyFRi+KO79EBERlQWWzVj0bhYvG/88SG7pVt993YTsO2Vqmw9la25jqWxLk8sOfCSLo8fIw44fpaacd99u/u+n1Ner/rpYnpq6SWZvLXzI4esVB+WjRXs9rsvN1eTBf61z//z5sv1BHRIh3978eYeM+Og3dlglIjKBZQMLQHbAO0OQmHCZXJ/5hjyZOUqO5NaQ2rbz8mLkt7IyerT8K3KCjLAvlxgt3eNvRk3ZIH0mLJCL6b6LPrNycuWVH7bLO7/skpNJeX+75Zjngmdvzd6pFkILh6LNfadTZJ6hRiMzO6/vR1n3+bIDsvnIBVm0M9HsTaEyCP9jF1IzpSzBCcu9X62RTUcumL0pRNYOLHxBDwtN7PJDbl8ZkPlXeSHrQVmb21IcNk36ObbK+1Efy/roxyRryki5wb5c4iRF/d3xpHSZvv6o+h7TVf/6yy6Zu+2ErDt4zmMGivEA7V1ACudTiz8jZcXeM9L19fkSDLd/tlIe/ma9zN12Uj2HNuPmyqdLyn6r8+ycvNc/wmEvMwcyf0Erhd7EuTul82vz1f9GWXH/12tl8a7TcsNHv5m9KUTWrbEwal6zkuxNTJG2deIkJjLvYIO6i6k5V6tLQ9spudG+XG5yLJNG9kSR3T/Je1EiWZpDVuW2kUW5XSTmvENEayxv/LRDvnMFGfC/x/q4v9ckL6Nw7pLvsx4MkdgNLcf161IysyUuJtLv87j7yzWSnRtYxiIlI1tiIux+D65nUpzb9s/l+1Wwk5OrycQ5O+XRK5tJWWacShzsRmjITF1IzZIalT1rckpq3Kzt8s2qQzLz8T7SpWG1oN43Fd1nS/arr6//tEOuaV9byoIj59LM3gQqQFJqlkxde1hGdK4ntavEiNWVjVO6EvrnPd3lzl4N5ZP/6yrRfg42h7Va8n7OzXJl5t/k2ow3ZG/rR2V3bj2JtOXIFY5tMi7yG7lj3e0i77aSwbvHyS2OJVLfdlr97Y4TyR4Hn5e/36qCjzN+prQau4LqRn+7QTq+Ok8VjPoTaFCBWS3d35ivApHCHDyb6vHzX+buVEM/4dIno6hTg88bgrms3OAO79zxj1XS481fi10ng+DRFwQVMGm+c5E8Cg/2cvHpSKHw3PTNMmHOThn5xSopD8pFxqJRfEV568YO6vstRz3rHvKzyTatqcyucY1MyuwnTWwnZKB9vVxh3yq9I3ZJZMopGSSnZFDkYnXro1qCXNrUW2511JFNuc3l6Nlk+fcq5yJn9/Zp7PMRLmXkSGWvzIReIIoCz0bVY+Xq1jWlRa3KRXqeK/adkWqxUWqcFWulrNh3Nt9MFAwVTDEswuaVOJFPXCu/PtKvqXSsXzWgnhr/WnlI/nJzR6kV5zsSx/DQjA1HpW/zBKkcE6EeY1iHOtKweqxUqxjl974Tk9Pl6neXqO8PThxe+AvglSUKdt3IukPOAt8ZG4/J89e0LtLf4vm/Mmu7fHZ3N+nTLMHnbS5l5A84yTz2MjSDC//HAZ53kAkWuOq99p32f+JoJeUisDCKCTA9rp89HtDqyOc516pLdFam3FzzuLRJXS9tM7dIR9t+qW87I3LyR3nHFSfk/PclmR1VV3ZqDSRjXysZZK8i+7U6ckirJdmulzslA0MP0fK3+bulZ5Pq0q9lDffjTlntPOgjug30YDphzu+SmpHjPvPVgyjnY2V7BDHL9pxRqXedw8+HJ/5u5sajcnXrWlKlQmSBPTX0TMek2zo7X4Nc599Xi4x0B0sobMUw1JB2tWXWpuPy2VJnunnLq4P9Dv9sO54XBD41daO8/4cuhb4W51NLJ7BAP5LCXrOCjPnvZvX1oa/XyfbXrvE59RgBJwUPapy+WHZAveda1S5akF7WAguH3Sa5OYwswlVumGSAQ6UcBhbFz29mSJRMSUQWApebJVbSpZt9t9xV+4hUO7NW2tgOSyVJl7b2Q9JWDokkLZc7XCfk2ZpdDms1ZZ9WTyr/9ptssDeQRaty5ItFdWXnxJsKfFzUP6Cfhi+oHdHHhHUIXHQYRjAGFseTPMdi/fXVePWH7bL7VIr0b1VDJt/Xs9DXZsaGYzLxpo6Ce5u23y4vTFwsc5+6QprWqOQugkMWZdX+sx5/t+1Ykt8zeCMEI3pggWmkf5q+RW3bTV3zphPDuUtZQQksEBjhte1Uv4psPprkURTnneUpCgxn/XvVIRVo/ev+ntKpQdUCh8j8wWsQaJAcSt9vPCZNa1QMKNtV2pAZ+2DhXnWSEGiQblR2wgr9/7h8HbzKEq2c7ZpyF1gUVtBXt0qMmgESiFSJkWW5HSUjur+syRwuNsmVerYz0tp2RFrZjkhL+1FpajsuTW0npKItQ5raTkpTOSmyeb3UEpGfXTWA2tvPyayoODmuxcsxLUFOatXltFZFnn9nvwzq1UmOZFaW8b8e8/lR52s2wbHzecHDiA9/kzGDW8p9fZuon8+5ijbdt72QJgmV8g9HIKgAVJoH6p/LD8h9vRvI6tMI3nLVzzg4bzVMu83wOthn52iy9WiStK5TWSK9Ck0TkzPyBVg4M/tm5SH5YfNxdfEOLDwyFoYZIoFAFgG9SDAE9fGivSqg+GRkV1l94JzH7bwLb4v2GCIvf7/NnYVZ/NxVfte3KWhxswcmr5Vx17WVu3vnDbcdPHNJIhw2qV8tVv69+rAcPWeTYUXaNk0955a1KklsVNE/GjYePi9PT3N2tC3OgdxYJzNr0zG5vnM9qV7AUFlh8FwKgm67FaIclogsShLsBuLQ2Uvy2o875LH+zaR74+ql+2BU5pW7wML74OWtWc1KAQcWujWuAw+msR7VaqrLr9JNxHWcaFmzoiQnHpam9hPS3HZMHmydKfbTOyU2aY9Ut6WILfWMdLKfkU7imXkQDMctdH57R3SkJGpVJVGqqa8IPM5qVUTW7ZQh9mQ5q8XJacH1VWW/oQD0Yka2jP9xR15g4WN+vj5DpKi8gxoMhzSJz6uz+I9rWMfIO4vw2dJ98tves2pIaNrDl7kzKJjS+8KMrR63vfXTFTLj8b6qB0cwaizw+10nL0rV2Ej5acsJaV27svx1nmcBJeopUPNiZCvgiIODe1pWjrSpE1doSjTRqygVWRKjZXtOy8bDF2T0Vc09gpknv92oMh8Y0kIDOAQB+Nv+f3XW/cx9+goZ/9NOJMjlBSnc+7/ukV9/PyW392iggp5e2BeP9Pa4DYqSselREf7/f45fSPe4fWH/a/48OXWjGrKbu/2kTH3YczuKAvU8Ou+hJwQuaH438aYO8oeeDQsdCkHBLgI6BHIFvQZmCWTYxtdstEA98e1GVZ+GWoE1Lw1QJwR1q1aQ0sw2oQj95WvbSjhCjxy8h964sYNUio7IVxv20vfb5K7LGnkMc5cn5S6wKCwjhel++FALpk4Nqsl3iZfkZG68rJD20rldJ3Vw/GjRPtUnY8adDWXi1Pkq21HXdkZq2c5LTbkgNW0XpIbtglSxpUqMLUsa2k5LQ/HKIGwR+czrpC71cLScjqoi5yROzmuV5IJUEpmzTCS2urQ7elGut+dIslSUJK2iJElFSdYqykWpoIZ6ApGRnSO3f7ZKIh35P6Qe/c+mQv7W82C/ct9Zd3B2OiVDalZ2BiZocOVtw2HndcmGgAbFqMYptcZZIT9uPi73uApoMSSEDAayM+sOnpfujaupYsqpa4+4b49iUm8Voxzi8HqeOGjqcL/IkrSsVVkdvPSDO7q++pJjCCyQoTAGE96B0F3/dM7qqR0XI7f1aOC+3nhge/5/W+WDO7p4NGb7esUhj22ds+O4fLFsv3x0Z1dpUD023wHmb786gyk9s+SdocHzuu6D5Wp7Fzxzpd+AoZLhQH4qOV1lTopD//9btd9zO4pi6e7T8vOWE+6fje8tQFABCF79BRbItl3/4XL1+upr/WTlaOqsvSg2Hrkg+/ImjhVo/aHzMnvrCRkzqKVU9DpglSSw+M/qQ2o6OYbfijOlGQGzruebC9TX7eOHFGkbfz+RLD9tOa5qqnAC8NyQVqrwG8OjH97Z1f2+xvsTJymAfYN2AeHmvslr1dfY6AiPmjYY/+MOmb/jlLqUJHNXlpW7wCLCK2Lv3qiaOpvHFEu4qlUN+fuCPUF9zMuaxnv0vUD1v35mnSyVZOLGSPk1t5vfv4+WTBVg1JLzKtjAJd6WJAmSLPE25yVBkiTBliSVbOkSa8uQRrZEaSSGzpOrl6svt+DiJ37AIm3JEivJWqwKPJxfY0V++EUkurLzElVJ9p3TpN6xRBWMdLE5b3NJi5FUiVbDQ3qRqi8YzjAy/ng2JdP94a9/sPj6sDe2WEcPjtUHzkqn+lUlOtKuMgzGWRxoKob27pgmCiM611X1Gg9e3sQjqIDD5zyn3gI+OL3fM8Yhi15v/aqew5Ln+nvMisEQUyBjre1f+cXncI/Rkj2n1ZnPH6dtkof7NZUow4EdwRMOfD9synve3xpm/aAgFBkOwFlU14ZV5avfDsqsUX2lcUJFCURyWrbsPHnR/Ro1q+H7gz7D0EL9RFLxAotfdzjb6RvhAxrZB/wfBcp7qjWGB42BRaBwlo61hnQbDjtnBp1ISlOB323d68vD/fwHGgh8b/sHtiVC7knLknhXQbM/N3+ywl0L9tyQ1iqI/2jhXunfuqZ0LSAgKCwR8dJM5/Ab3kPG4beS1AjgPY6AWodtjbDb871/dXhs/X0EeP+99tMO9T0CjkFta8mcbSdVxkx39Hyq+t0dPRv6nXUWbMjgVYx2qH4TCIIaxceqkw5f9Wi/7c1/EnrYx+dIeVPuAot2deNkeIc6ql9EQuVoeX1EO4/UepMAP2yLAgezBTtPuQ+IaO2dnp33IYw0dEGQSVBDLFKz0JQLCkoRYNSQC1LddlGq2lKkmlyUarYUeaxnNVm+da/Y0pOkiu2S+l1lSZXKkiZ2mybRtiypIUlSw+Y1Nr3Bc+41kpMfFZDcyNQcKsC4JDGSolVwf8V1CD7StSj1NQ0XLdr9/ScfrJB37uwl5zMdEntip3SwRUm6REkaLq7bDZq0yKP9ymdL9skXyw9IQqVoubW7Z70F/LjlhHQ0FEgiqAD8TSBwFuU9CyQtKztfYIQzZAQwups+dh4gigrvRWQZ2tWtknddYoqaWbNy/1l1aRzvecDGsNHfF3quU6MzZkSOnEtV2wl3fbla/tCjoZpW7K84FAEVztDPXsobssGquv6kGzIu+P/qEeBYPB4LQ0QY0jGuraNnPh5yXXdgwrBCF/Hzt9Cf97BTURh7y+j3/N26oyrIxf/yQ1c09btdlwxBKIYc4+MCC7Z2nXR+JmHqOvYtLgWd/QY6xIH9WRy+/irZ0IwO9SqXTVig3puzRl/u8z6MQYUeNBhPthBUobYLAYbu3q+cmQG8b//1QC9ZvueMXNW6hkRHlE7hMt5vegbP6O1bOspt3fOyhrpDXn2AvJskFgWySnWrVJCrWtcs8vuzQbUK7swtArzSen0CVe4CC3wAfDSya770ow5TK3964nK59gPnGT4gZYcq/uLCDv94ZDc102LyioNqDL604OB9WIuR2k3ayHyvlPaj1w2TxzbMk4uGAyOg6BSzWeLkksTZEGikqsAjzvW1Yw2HXNk4WnLSLsryHQelIm6rbpcmlRCY2NKkIg7/NufzwtcouSRVUSRS1CHd6R8Keh1+V0BzyzQN9x6jgo1La2JkeFS0ZGRGSp2dVaRrZJZkSIRkSKSka9GScKCK5M6vL6MdJ5yBjApmEKxEq9tkSYRki0N1WMX3CGScwY8zkPn6t/1ydRvP7ouYi45ZIhhD1f3ZMIW3OIWjusGulPv0R/NqC04mp3vMZvJuamYc/vH290X7PMZ+jZ0anVOAfX8A4WwUmQ5Ms/3Q8P+CcW/jwQTDJ8iC4D1uXPQNWQb9gxhDPAiMrmiRoM5wjY+p1zqgm+nCZ67Mtx3odGrMnFSJzTvjR31MtdhIqek6k500b5f8b8Mx1cG0uIGFcZgr73HztgGZRmTBYg1FnwgwvHvO6IWhxt4kxv97vK7/23BU9brx1csFcQLWK8GU74JsP56kXiPjUMjq/Well5/sDgI4BK8JFaPVa4nA87F/r5eh7euoJoL++GqYd8unK2Xvm0PVvkfhLgLcwgpm/dUq4XNZLxjHe8fXMOiE2b+ruq0/9GggD/VrKk0TKgZ9teiMLN//t2/+/LvPwML4+uw6ddHncGogMPSrZ5W8A8iCamOQzRk9ZaM6WdaPa30mLFRF3NMe7h1wVjLYyl1g4cuVLWuof+QO9auqN2r7enlnizd2qSejrmpe7MDi8uZ5UymRXgvlc9KLSnWYounrjBNFpxclVl2O6Z8fxs8RJFoCWDYhUrKlgqRLrGRIRVu6CkDwtZIKQNLUEA0qOXDJ+z5TYm3pzuvwsy1TYiRToiRLYmyZ7tvgeh2+x3X5gpYLIo28X2KcJK0TebbgDHSBMvc7JCMa2ZNIlT3KOuZQwz3ZsxwyKypCMiXClVFxZmTwfaYrYFFBiwpcIlQwozIwmvMrAhvcDq3lMzVnMKS+lwh54tOfpLrr+0upUR5roHjT6zp8mbnRmaHxPnvWrT/ku45hx/Fk2X7cWRiAWTi6B75eJw2qV5DqsVGSnJ7tPptf9/JAj6EQHNz07AEOjvj/wQU1KwufzRs20msdUKuCnhPesg3dU3eeTHYfMJF9GfLeUvV/u+jZ/qoJnp610XukGJ02BFUFHTi9a4C8r8Pw2p1frJYWhnF/BGF6YIGDAIo8MQaPE5Ih7fLOvo21Qde8v1QNqaHQ+sYudaVfixoetUIIFIa+v0wNKen2Jl6U5jUre2zz8L/nnQDp7vlqjex8fagaVoqNdnhM58b9DXh3iZpGjcwCVmVGTQsud/Rs4D5QI0ictvaIXNWqpjSMj/V7Dn7qYobUq1rBI5D2NZznKzDBmbX791I4vRgcQ5i4vHljexnZKy+4RwCLuq+SBBvGbSpK8zq8fhh+wzCOFmDCAsEY6pVwvNlt6OZrzLrh/+Ka95aqhoKv39A+333o6zv9vPWEfOTKXp51nWggI28WBhYiEl8pWja9MlhifZy96WcCSAujEh8zB7xTer7g7Ay3RWSt8y506tG4mpxKzvA5Jle/WgU5fiGt2N30RvZqmC8YMtZ5lAac8WdJJVU3ckuXenJ3n8Zy/YfFXxSpW6Nq8t7tnaXr24tUVgUBhzP4cAYhCFzwPb5GSbYKRjCco4ISQYCSJY2q2OSy+rGydMdhdVsVpEiGClpwm0jJkQh1yZYoW7a6zhns5J3hOjMwaSpDY9o0xDUif4xGYOMMbtI111c9GNGcQYgenOjBDPaJM3hx/U79nX6bCGl6tqpE21NVAJQXDEXIt9O2SQ+b82+O7DwsjW3IAOFVjpCL5y7K+XPOoCnSFThhdd/Oht4VCDp+/T1R9RpZe/C8R3DT660Fsv7lgfm6z77vo7bJmAW5/R+r5E/XtJL7+zaR/65z1sfg/wMV+ve6Zj2J68PVG7I+vlLEqFfBgfDGj39T4+n+6gO87UlM8dnYDENMmOUE+P8z1kVgps6CVrXVc9LrdFAjgwve5zh46LAdxqACBk5aqrKpCPoub5HgkTXxfM1yVWZJH1ba8+bQfLdBZsFY6wUvztwqE27qqL7/ePE+VWv2bswu2fLqEL8NnpAFQ5CHx9ThddanKyPoQlbJ158ba5UCWYQP/VH2GzpXTpi90x1YoOvwI9+sl0Ftasmk2zurIY1bPl0ht3dvIKOvbuH3PrH9GBa9s2dDdXbvb8o3PvsxHIOZMMiUeNMbG6Lwua2fGWFGeO1vdA2X7nz9Go/3LAJZPauHrBYCBTQ/9BVYeL+f9SJbZAC9Z6uEEgMLF3/dH/WTiBUvXC1HL6TJD5uOuwOLl4e3kTd+/j3f33x1Xw/p3TQ+X5rZe0fjw+PHJy6XTuPn5bsPVIXjnxtp1uKoGlv8+f+6z+7qpv5ZiwOpOJzJlASGpTCLQc+qpGH4Q2I8T28KCbxaRVaWiLbNZOyWgmer5Ke5gowMiXYFLPgZ3yMzgzVkEJDge1yH2hY9C4MsjTNYybs4MzBZzqDGFbjowZD7q80VHKnr8LPnhxz+HsESBryCFtwgYVHyt4pk73aItjdCbo+2u4OTrGkOuRAVLY9miNwfZQh8tAjZ+94k6dwoQT6OPCc5YldBTo6Gr86/xXW4/YrP/ytPOpyBEW6TOH+u/HN1rJxPzpA7HM7Hivl9h+xKqyFD7AfV3zc6f0R625MlW8vLGG1df0hu2LhKXhjeQSKjIqWOnHX+Lsch3cfNlNRsm2hiU4/rrOEJ/AVGP5LB7WqpKZh6UKHbeuyCxxBazzd/lc6Gmh8dDs7Gg4u/cXp9iBa1Yhj39wdTdXX+etHgc8z4LL9dc0RSMnLknVs6ypJdie4AEUMnxsDBCMETlg7wHk7Axw+Ge/q9s0idYH15b498f4vhIl1A6wF5vSQYxtGzI09+u0llY1G8/e5tndSZPIb7MH28oMDi2elbVMCAxm4o4vdu4OerIPiH0X09rkeWKtIwUyvXY0p5ulpjyJsxoMN+MP6MoEM/dhj7LiEj4z3V2VjIjd42Z1z30yTenCEQHQOLQujRJ8ZxccHZkQ4Fg74gfehLRa+mQxhj9NcuG2+s0moDi7PIt2/uKD3fck4b8wXbFch4YXSE3Wf6GJte0s6QwWjJjQ8fnNkUBdZpQe3A6Ys2SRe9i5nXjULQSQ9ZGgQdzkADXzNVgIOfVZBjCHb0AEXP2DiDHmfgE+kKWLzvA7+vFmOT9HTkPXIkwpZtyOC4giZ1W+djqCEqr2BHh9tLbo5Eeh+Ps0Rq+JqdiszyPpFhxXmLIHFk/LdBIu6oYdr1cZEn/AVLrhh+ZUzBn4S5ms0V5OjBSYTkil1y1V7BxfmkELwgGEn928sSHRUpP0WlS7bY3cFRtVWx0joyy7VH7JKV7pDcPXYZHum8L811yVrkkEtHa8krERfU49U5WUk6RKS5Hwtvt2zNVQ+EbTrlEPvaNfJ/jiPqfvVtQ3CG26yYtUqG2J3b9u2/N0h/u77tduftNbvMm5Mo6w8lSQeb8/nhfjdvOSU/1EiTKpknpb7tojgkV8Z8PF2a2LKd2S/3Njifz4Z9xyXa9Rzws3otsnJk/NSN7qFYHDh9ZZGMzewwU6kwxv48uknzd6nZM0lpeff1zHebfWZzPly0T37daZerBuZIpGt2Dupl9BocfzPRvOkzCHUoxDfOSD9rCBL0qbnejK/H50v3q6EMHbIm8YbPVx2mlGNYysgYaOjrkZTWJISiYGDhx/ej+sryPafl/wwFet5Zh3gfHSsL4p1m9R4KxO/16Zgo1sM4rjH1Fyh9G1Fd7asQCiloveDN25MDWqgDOqbRGbMeqPb2LhrUh3c2jbtapR31MXl9nLCgwAKNnaa7hmYeuqKJfO5jfB1DQfDdo73l1k9XSnGghbm/+KxDvSoeXUGNQzD9WiTIqz86p8KFApp0GQsV9SwN8hoe/UWKkK0JSOEZaC/YKk0dVnDYMgYiyLjgsHNDx5oyb8sRj+v1zI6ekYmw5UivhnGy6fDZfNkd/E4PbNyBles+HK7Do0M09b1zG5wZJHzVAypcj+/rVo6Qcympru3E73MNQ1/+i6jVLCn12IW0Wdf/h12JxfbeQVSqSMtAg6cDIvfpHy8XA/h03ijyRglqh1TdlK9zo+Uit4nhd3ifFWG4Puc9u0x0ZYtyo53BRsWvImVtdI569yAMAdtBES0auRnnbZwBj821l/XrsCdxnStr5Sqyxs+4l9zldtEu1JG/2U+5J4vZtmrSOL6i9I68pO7nwr+/k4oxUVJ30ykZKTbZPfl/ciwpS+IrV5Dn7ZfU3+nbpLbflUFTw4OuQAqBk/OlsIkkiWjufWqT3BX7pPvJ41LV4fys1lJt6E3nfk7O4nBnIKYyYjtyxJF4Sa6271Xbd3H7ZrncFfjh/uf+eEquaB4v1WMjpeqJ83KF/bC6j6TdDpH68SJ2hxxLypBxs7bJueR06eB6D+7QGqnXC0Zf3VzMxMDCD6QrfaUsjd3m4isWrTjGu+Lcu6kNCkX1gy0O7q+NaK/mhd/du5EaX4aXhrVR6Ud/sw5QvPSPu5w9MT4e2VVFuVe8jSmavjsS+io2RRdMHWY+oKkTZh74CixQe4Lq95+fvEKl4vSoGf+mBY1XI92qP1eMk2KND4wnGunROaYt/vnatvK6a857YSbd1knNh0dQZQwqUHTYqlZl1fsC+wKvr74GyLu3dlJnOoACQ9TdeMNroS/0huANVf7efTl8wXogvhp+eac0v76/p9wTwFL3/pR09lJgnGfsmepTPFKvOnFyvRRaQgvZ64jMyzj5eYmWnY2RkzlF63IbaI2Tvr+XPXe1XPnibDVGnp8zOHEGSQhSnOf9esCighBDFsdhyDEguMq7ba44bLkyqHW8LN150h3U4Hp3kOMKlvTH0+/D+dV5nTNrlBcYOR8Lxz3ndrmDItc2NU+IkUNnUlzbknc/zsfTAygET/rvtXzPUW2P6zH1YA7fq4O260Do3ArNnQHDfRdEfz08otZMkRqBjC4VZ4jvd5FrvYO3CyLt9OtcM7Fv1z/2Tot0x9ezIpcH4wi4WOT/8DXQIO+/Im1E5Et/56U4x3KdZ12Di347Q8ubelhCAd8YPqY6pf9DkqSS6ruhDyGbhYFFEV3Tvrbc07uRKgbDionGM28MHWD5cH+8izf1FRf/cnMH1VL6levaqkW5UCGMGSqonNenEP33kd4qdYiVGu/t21havDTH58Fp6/jB7oIeVBzjDfbj6Mvlxy3H5R+uannjuBxgCfBacdEqPWcMKkAvGMJUWV+MXRixra3/PFd972sYB1Xnq/efU1kRVD2jhgNjiyiaqls1xuOAgKK3Zwe3cl/3wOVNCg0s0KHyrt6NVIA2oHUt6fSaZ+3Ksj9dna9KHdtUo1K0aoaja10nTgUzCAZ6NKnurjMx7j9kNXacSA5obLhDvbjCA4sIu5rJYwxeCoO24UmpmXIiOV0FUCjYRbAaaEq3KEZd1Ux1ig0EUsN4Tf01CdPhfwiQtg50nRSsoIv/g5FfrC70tkdda+bgtc32un99cTnnYdh/SuGqljVkUSDr5Wgiq9TbM28WSGnrExsvK7L81wSU9hCdZ3BkDGxyXQGIMyxxBkZ5X51/4YTvnQFPXnDn/F4Tuys4Gt6upvy6/ZirVinbPbxnfHz8nfE+cdGvNwaK7qDKpj9e/moW3EZ/HBVs2bI9Yh53xsWdx9C/168H57YZs2fqtbHlbUPe66I/D+fPCF/1e6xeKUqt74S8SY2KDqmGQCI3R86kODsJGzMp+vf+huhDiYFFEeFAOn5EXnXuX2/tpAotUemNlTwLgqGJa9rVVkMgqNp9eqCzqOj2Hg3VBWY+3ldNS/PuMmc84GMb0IERgQLaC+PghuDmqYEtfDZG6VC/irSvF+cOLLyhEKywnvaP928mm45cUNP79Nba3lOajEMfvoYf0MNArzoHBEk6PD5WogQEFb6WSEdApGdq3v9DZ9WcBk2p9GES1I5garCvqb2vXue55oA+nUvfHuOBH5kqZFu81ylAtTsaSs3bcUom3NRBFYihJXFhagXQ8VHvKmkMyJBdub5zXbVmiHd766/u7aFeM9weB1AEShi6ql0l2md2aPPRC6rZUmEGtqmVr2Gbvp7G8A51ZdjflxV6HyhExPuioMACrzHeT/r33gWA/iDbhkyWr6Ejb/pL6Qx+PQML7PfCnsumcYNUQWNAgUURYdZYSZcO0IcekWHTpxIjOMV010ChJ8SiXYlqdlqgcBisUrly4b1BfHwGoD13wAXprr8f1LSd/LrV94mNVcRXjPKozXAz/Nu3iY+Tbx7oqWYRejfgw9/HV46U5DOXpK+hxYFZGFgEQaCL8eAD7lPXMIU/GFYocMVFQ5bhhs71VGoYQxX39G6sAgR/jHO79bP1GY/3UU2G8CFXGNRkoO5EPwjjQIDmLBhCMLqjR301x/zhK/Km/+U9rv/7N07Lw2qnvsz7Yz/1ofmHng18BlDG7ImxJwCGUYzTEX3pWL+KykQ192rgZIQi1VeuaydjhyGRKfLC0NbqOekZhkevbKYWVfN+noXNJ0eGBgd/MGbsf/ljP/f9NntxtsffoH05gh+H2DwKtXwFMbd2b6AyGd6BBQp0vYvqhnes7RFYYLqevpZG27px8uW93eX+yet8Dr/oU7IxLx/ni3qw5j17avaTV0izmhVlz6kUdeaF1t8DJy2RQGdvYRhq8bP91QEKTZq8YbbEyzO3qewVeK9pg6nceP0KfpwIFahVKkbvGbwOWKMGq/v6goMDnkdJAwt93+GkQw9+3rqpg+rUqs9gQCCGAnTv9V90eG9NvLmjmqHxwowt7s60BUHtF7KN2KcLDQWD/tzXt7G7OPPhK5qqVYmXu4omkfHFCrbGk54+zeLVwVF/XzUwtIb/dcyVqtsuPnN9TU8OVw+7TgT9Qb2ez8DCa62VPhMX+ixqf/PGDtK1UVV1ktHFxxB+qIXfMn0UEBxU8EGPjmw4oCIrEWhbX/3ghYM5evAXtaEMagaQKUFdhfcCQeOvayNv98yRZjWcBzt0FtRphTwfDC/AYEMmwwhDJvjA9teu1ntxLHzg4oP1pi4YkSwYXgNkoozdNHU3dK6rvt7fN++5AObqjx3W2v1zmzqV5bqOztvWMQytGIdZcEB8wlBYhQ99HGjz9oHm87XB64jXHV8HtK4pvZr47qxoLLhtUzVXRvd39lG5oUs9lf43Gjs0b9t1KHrz+NmrutxYV4Qz+seubKYKfXFfC5/pL+Ovb6f6TBiHtkZ0rqfa2rufc904tQ8RgPRvVVMNm+hw9l0QfaEzPE8s313TK2i7uWt91SFx3Z8HqoDG+33xzKCWMuXBy/INB3rT94dx+AsLeBn5Cshv6lpP9r41TJ40THFs7xXwX9GiRr7ZYMb3iy/6c/EFr6EO7eeRyfrwzi4qOMLCc8b28Hqdli7OtR04mUGQ6A/6ZxiHR5GdxUlNINAjAo3C8P67uk1NaVcv7/VAQP2iYXuGtq8tUx66zCObaXwPqiD81k7yx0EtA3psfE7heb04rLUMaVtT6lcsesUzTjj8wUcuXmdvd/Rs4LHPCpul4bDbSzRTDsOJWAsHn+nB7kZaHMxYlEMFZTZKCm9q47Hh1evbqTbm/rrvGf37gV5qZUfUsRQH6kSM/vNgL1WkqTfrKa6/3d7Z5/LI3vPMUWj7xo3tVeOzoR3qqGY1KO40DpHhQ/KZwa2kS8Oq8uXyg+rs2tgoCh0kfcHrGAh82OPDuVblKOki+2XYgObu4ASdFjFnHwto4eCG4TYEmWguhBofwBCdkXfNjfEAiIMugtm3b8nLWumryRqDXKwoi3oZTD/Uf+9vVVScPWOJbn+8C4J/GH25GirSFwrTh8CMfWnQU0X3xIAW+dqb4yCMtshG+mezMfOFwG7XG9dIq5eddUSP9GumMoc4aGCdCxSVohZIPX6FvOfkKwNpnMqN1TFx5t7y5Tke9R9GxsW+EEwZhyGQQcDB71wqhlCd++/ajnVVm2f8P6JbqJExW2M8KHoPvyKzo9epGLsR68EnlpDHWbivwlgEWDM2HHO/pz+7S5VLKqgZ0OkHQQTM6ESp13ThhAWvLYYf8fr+857ual/4O6no2bi6vHNrR5UZ0T9vAPtDrznI6t1Qfvx5tny4t4rPqav+hq+v7VRXvnYNeeLEA8OKeA3wv56VnasW/UO/DM/XLlY19NJV9dNWwNggDEX3Dxehb9DwjnXcK/gWtrptqDGwKEdQxIkGMEiNh5Kecsf4b0HwAXxzt/wLiRUGZz0Lfk/Md9DCmaq/Jb6LAh9+/rrY4XcoGkUhYq+m1dUB7a7ejfMVUeG1rxCVty1Xt66lLt7wAZuYnCED2xRtISIdDuif/F83ycrKktmz86devWtpsD4EAg3jGSxmE03+7aDc3K2eO4tkHBLD8BcOTgW9tnf0aKgOOle3qqleIxQRrxw7wG+w0Ld5vBy/kO6xcBnGjXFAw1RnvGd9ndUjG4Tf6YGFr4Ncn6YJMu3cEY/1VowHKONBW6d/TKdlZnschPFclj53lVqjA9usHxgxoweFyCioVX9vs6nrxv+4XR68vLFH91F9P61+cYDM2XpCbuhS16MfAV6r9/7QRQV8+voRxjNeHHAxlDDTtZIv7stY9+V+Dq5t8+7pYJzJZAycjPtz3LVt1ZAgunGirwvMeeoK1YRKz8Dh64qxV/vs1YDMkR5YeDd1euCKJqoLMIqsCwqcjcvTD2jjvyi2bpUYmfbIZer54n5wMqG3//YuZESMOfWhHtJzgu82+AgGhrWvIx8uctZ7Yb0WvD/QPRTDL88PbZ3vs+DBK5qqRmKoT7rtM+fQHP7GGKj56ldkrDNCvx1kapFZwcJ2RgjM//1gL1VLZlySAf9jemBhDM7DQXhtDZUqDJfgEmrLn79KLYleWgvi4MAS6mDJaOGzV6q2zgVVYwf6uuPDfJxXoWlpM7bNrhQVoVpLG9tLewsk+MO+xoGzaoXAer0gW4XjnXE1Vgy1GYeRiuula9tIzbhoub5T3nBMZETeGR6aECHg0ld+NR6UjWtz6NeheNS7UREOIt5n/AikMTyEIM8X3N5X7Q9qeRBIIKuB1wRn48Y6LgQGyKLhJAGZCz2Y8cfYZGnNSwNk6W7/tR0oKEeNzS3d66v3AoY027myFb4ex99S9KiTwFBA69r5/wbXbX5lsM8hhOLo0sgz/f/y8LaqZmSgYZVUI2NggKwO6qsmzNnpfm2fHdLKHVhgajqCAgTFqJ0xBmI6FYC5hnOmPNRLtVzHiYGxmyYCcQxh6tPxEXTi/TH4b0vU4mt68IZMhzcsc49tXvDMlWp1V0yFx8J4aOuO/5s9iRfzDXOajYEFlTqk+r3XhbASDLWUdLjFTMZ2zYHW6QTC30HHFxwYcDaJg033RtXUWad3/URhBYL/XXvE5zLwyCJh+Ml7CAsfxuhFgg/zD+7oIot3Jar1MdB6Ww9CkLFBBseY1i6OhGhNzmTYAupmq3eyRSbHWPODv8WMAMyEAhxoME3XX/deX9kZBHp4bligrE/z/HU6Tw9sqS46f6ukFtY/BfsTZ/L+FLbNgZg1qq8qFH92cMt8mU+sF+KPMTODokoMcaFHD4Y0MLxjpM88CrSLMBZ86+Na9A1FqUaYZaYHFsjG6QHG9xuPq5oMGNy2lhpGwow3fdVtPRDC/9NNXT2DegQXuISbsvtpSERBYVzO22w4IKHTKspxihLkqNk6Q9vkS7sX9DgzHu/rPoDjQIciUzSIw8wjY8amoOxNoB5pkyO7HY1k1FX+161AgStmZTzqIzjShyIupGW51+AJNKA1Ziz01T8Lm51WFJiKjtfo3q/WqAMihgRCAQEBLsWBJnoI0vS/f/OG9qoIWS90xTAX1n1B7Utx2Ww2FfRg9lKXBtXkoiEbpxcF16lSwWPIBxkR9GpBYP3ijK35apzKCgYWROWccTGocIAP5OLUogUaVOh8dYZFmtn7rDAYalYQuXdYO/caFb787bbOasaGv3b7OBh5N9kLhLFYszRmDOA+MXQz+b6e8r/1R+VBH1PNw433PkYQ28Uw5f3T/+smK/edlStbFVwXVpjRhtlByMahrgL/bw2qFdyiAFkVzH4pqxhYEJVzKA4j8+Hg5i+oKImKIRqmQ3CB+gQrwNCtv2nvxWVDluyxPoUud2AFDCyIyjmMqZ9OyShR2pfCF8bguzas6l5CgMxjt3hAoWNgQVTOVasYJR+PDN6YO4UXpNX1ehKiUGDnTSIiIgoaBhZEREQUNAwsiIiIKGgYWBAREVHQMLAgIiKioGFgQUREREHDwIKIiIiChoEFERERBQ0DCyIiIgoaBhZERERkbmDx0UcfSePGjSUmJkZ69eola9asCd4WERERUfkJLKZNmyZjxoyRV155RTZs2CCdOnWSIUOGSGJiYulsIREREVk3sJg0aZI89NBDct9990nbtm3l008/ldjYWPnyyy9LZwuJiIjImqubZmZmyvr162Xs2LHu6+x2uwwcOFBWrlzp828yMjLURZecnKy+ZmVlqUuw6PcVzPukouN+CA/cD+GD+yI8cD+UXKCvXZECizNnzkhOTo7UqlXL43r8vHPnTp9/M2HCBBk/fny+67///nuV6Qi2WbNmBf0+qei4H8ID90P44L4ID9wPxZeamqq+apoWvMCiOJDdQE2G7tixY2oI5cEHHyzthyYiIqIgu3jxolSpUiU4gUVCQoI4HA45deqUx/X4uXbt2j7/Jjo6Wl10lSpVkiNHjkjlypXFZrNJsGCIpUGDBuq+4+Ligna/VDTcD+GB+yF8cF+EB+6HkkOmAkFF3bp1C7xdkQKLqKgo6datmyxYsEBuuOEGdV1ubq76efTo0QHdB2oy6tevL6UFbxi+aczH/RAeuB/CB/dFeOB+KJmCMhXFHgrBsMY999wj3bt3l549e8p7770nly5dUrNEiIiIqHwrcmBx++23y+nTp2XcuHFy8uRJ6dy5s8ydOzdfQScRERGVP8Uq3sSwR6BDH6GCOg407TLWc1DocT+EB+6H8MF9ER64H0LHphU2b4SIiIgoQFyEjIiIiIKGgQUREREFDQMLIiIiChoGFkRERBQ0lgksPvroI2ncuLHExMRIr169ZM2aNWZvUpm1dOlSue6661R3NXRHxbouRqj3xXTjOnXqSIUKFdQidHv27PG4zblz52TkyJGqEU3VqlXlgQcekJSUFI/bbNmyRa644gq1z9AR7+233w7J8ysrsM5Ojx49VJfamjVrqqZ0u3bt8rhNenq6jBo1SuLj41VX25tvvjlfZ9zDhw/L8OHD1do8uJ/nnntOsrOzPW6zePFi6dq1q6qYb968uUyePDkkz7Es+OSTT6Rjx47uxkq9e/eWOXPmuH/PfWCOiRMnqs+np59+2n0d90WY0Cxg6tSpWlRUlPbll19q27dv1x566CGtatWq2qlTp8zetDJp9uzZ2ksvvaTNmDEDM4a0mTNnevx+4sSJWpUqVbTvv/9e27x5s3b99ddrTZo00dLS0ty3ueaaa7ROnTppq1at0pYtW6Y1b95cu+OOO9y/T0pK0mrVqqWNHDlS27Ztm/btt99qFSpU0D777LOQPtdwNmTIEO2rr75Sr8+mTZu0YcOGaQ0bNtRSUlLct3n00Ue1Bg0aaAsWLNDWrVunXXbZZVqfPn3cv8/Oztbat2+vDRw4UNu4caPatwkJCdrYsWPdt9m/f78WGxurjRkzRtuxY4f2wQcfaA6HQ5s7d27In3M4+uGHH7Sff/5Z2717t7Zr1y7txRdf1CIjI9V+Ae6D0FuzZo3WuHFjrWPHjtpTTz3lvp77IjxYIrDo2bOnNmrUKPfPOTk5Wt26dbUJEyaYul1W4B1Y5ObmarVr19beeecd93UXLlzQoqOjVXAA+GfE361du9Z9mzlz5mg2m007duyY+vnjjz/WqlWrpmVkZLhv8/zzz2utWrUK0TMrexITE9XrumTJEvfrjgPcd999577N77//rm6zcuVK9TM+OO12u3by5En3bT755BMtLi7O/dr/6U9/0tq1a+fxWLfffrsKbMg3vHe/+OIL7gMTXLx4UWvRooU2f/587corr3QHFtwX4aPMD4VkZmbK+vXrVTreuB4Jfl65cqWp22ZFBw4cUB1Xja83esdj+El/vfEVwx9o+67D7bFfVq9e7b5Nv3791PozuiFDhqhU//nz50P6nMqKpKQk9bV69erqK973WVlZHvuidevW0rBhQ4990aFDB4/OuHidsSDT9u3b3bcx3od+G/7/5JeTkyNTp05VyxhgSIT7IPQw1IGhDO/Xi/sifJT6suml7cyZM+qf3bulOH7euXOnadtlVQgqwNfrrf8OXzF2aRQREaEOiMbbNGnSJN996L+rVq1aqT6PsgaL/WEsuW/fvtK+fXv364TADEFcQfvC177Sf1fQbfBhm5aWpupoyrutW7eqQAJj+Bi7nzlzprRt21Y2bdrEfRBCCOo2bNgga9euzfc7/j+EjzIfWBCVl7O0bdu2yfLly83elHKpVatWKohA1mj69OlqIcYlS5aYvVnlCpY7f+qpp2T+/Pmq4JvCV5kfCklISBCHw5Gv8hc/165d27Ttsir9NS3o9cbXxMREj9+j6hozRYy38XUfxscgJ6zL89NPP8miRYukfv367uvxOmEo8MKFCwXui8JeZ3+3wQwInp054UwYswO6deumZut06tRJ3n//fe6DEMJQBz5XMFsDGVBcENz9/e9/V98jq8B9ER7sVviHxz/7ggULPNLG+BmpSwouDF/gH8/4eiNFiNoJ/fXGV/xz44NAt3DhQrVfUIuh3wbTWjEmqsOZCM4MOQzihNpZBBVIu+P18x46wvs+MjLSY1+gRgXT6Yz7Aml8Y6CH1xkfkkjl67cx3od+G/7/+If3ckZGBvdBCA0YMEC9jsgc6RfUcWFau/4990WY0Cwy3RSzEiZPnqxmJDz88MNquqmx8peKVnWNqVi44C0yadIk9f2hQ4fc003x+s6aNUvbsmWLNmLECJ/TTbt06aKtXr1aW758uariNk43RQU3ppveddddatoe9iGmeHG6aZ7HHntMTetdvHixduLECfclNTXVY3odpqAuXLhQTa/r3bu3unhPrxs8eLCasoopczVq1PA5ve65555TVfQfffQRp9cZvPDCC2omzoEDB9T7HT9jhtO8efPU77kPzGOcFQLcF+HBEoEFYK4x3lDoZ4Hpp+ifQMWzaNEiFVB4X+655x73lNM///nPKjBAQDdgwAA1v9/o7NmzKpCoVKmSmsp13333qYDFCD0wLr/8cnUf9erVUwEL5fG1D3BBbwsdgrnHH39cTX/Eh+GNN96ogg+jgwcPakOHDlV9QjBn/5lnntGysrLy7fPOnTur/5+mTZt6PEZ5d//992uNGjVSrw0OQni/60EFcB+ET2DBfREeuGw6ERERBU2Zr7EgIiKi8MHAgoiIiIKGgQUREREFDQMLIiIiChoGFkRERBQ0DCyIiIgoaBhYEBERUdAwsCAiIqKgYWBBREREQcPAgoiK5N5775UbbrjB7M0gojDFwIKIiIiChoEFEfk0ffp06dChg1SoUEHi4+Nl4MCB8txzz8nXX38ts2bNEpvNpi6LFy9Wtz9y5IjcdtttUrVqValevbqMGDFCDh48mC/TMX78eKlRo4ZaqvrRRx+VzMxME58lEQVbRNDvkYjKvBMnTsgdd9whb7/9ttx4441y8eJFWbZsmdx9991y+PBhSU5Olq+++krdFkFEVlaWDBkyRHr37q1uFxERIW+88YZcc801smXLFomKilK3XbBggcTExKhgBEHHfffdp4KWN9980+RnTETBwsCCiHwGFtnZ2XLTTTdJo0aN1HXIXgAyGBkZGVK7dm337f/9739Lbm6ufPHFFyqLAQg8kL1AEDF48GB1HQKML7/8UmJjY6Vdu3by2muvqSzI66+/LnY7E6hEVsD/ZCLKp1OnTjJgwAAVTNx6663y+eefy/nz5/3efvPmzbJ3716pXLmyVKpUSV2QyUhPT5d9+/Z53C+CCh0yHCkpKWoYhYisgRkLIsrH4XDI/PnzZcWKFTJv3jz54IMP5KWXXpLVq1f7vD2Cg27dusl//vOffL9DPQURlR8MLIjIJwxp9O3bV13GjRunhkRmzpyphjNycnI8btu1a1eZNm2a1KxZUxVlFpTZSEtLU8MpsGrVKpXdaNCgQak/HyIKDQ6FEFE+yEy89dZbsm7dOlWsOWPGDDl9+rS0adNGGjdurAoyd+3aJWfOnFGFmyNHjpSEhAQ1EwTFmwcOHFC1FU8++aQcPXrUfb+YAfLAAw/Ijh07ZPbs2fLKK6/I6NGjWV9BZCHMWBBRPsg6LF26VN577z01AwTZinfffVeGDh0q3bt3V0EDvmIIZNGiRdK/f391++eff14VfGIWSb169VSdhjGDgZ9btGgh/fr1UwWgmHny6quvmvpciSi4bJqmaUG+TyKifNDH4sKFC/L999+bvSlEVIqYfyQiIqKgYWBBREREQcOhECIiIgoaZiyIiIgoaBhYEBERUdAwsCAiIqKgYWBBREREQcPAgoiIiIKGgQUREREFDQMLIiIiChoGFkRERCTB8v//ZUsXimz/pQAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.3787\n"
     ]
    }
   ],
   "execution_count": 16
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
